package org.persistente.manipula.conexao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


/**
 * Fonte conexão que cria novas conexões a cada requisição.
 */
public class FonteConexao extends FonteConexaoAbstrata {

    private String connectionString;
    private String username;
    private String password;
    
    public FonteConexao(DriverBanco driverBanco){
        this(driverBanco, "", "");
    }

    public FonteConexao(DriverBanco driverBanco,
            String username, String password) {
        try {
        	super.setDriverBanco(driverBanco);
            Class.forName(driverBanco.getNomeDriver());
        } catch (ClassNotFoundException e) {
            throw new ConexaoException("Driver do banco de dados não encontrado!", e);
        }

        this.connectionString = driverBanco.getStringConexao();
        this.username = username;
        this.password = password;

        super.setConexao();
    }

    
    public Connection novaConexao() {
        try {
            return DriverManager.getConnection(connectionString, username, password);
        } catch (SQLException e) {
            throw new ConexaoException("Não foi possível estabelecer conexão com o banco de dados", e);
        }
    }
    
}